﻿#define _CRT_SECURE_NO_WARNINGS
//经典编程题100
// 101示例：
// 给定一个 5*5 的矩阵（数学上，一个 r×c 的矩阵是一个由 r 行 c 列元素排列成的矩形阵列）
//将第 n 行和第 m 行交换，输出交换后的结果。
//输入输入共 6 行，前 5 行为矩阵的每一行元素, 元素与元素之间以一个空格分开。
//第 6 行包含两个整数 m、n，以一个空格分开。（1 <= m, n <= 5）输出输出交换之后的矩阵，
//矩阵的每一行元素占一行，元素之间以一个空格分开。
//#include<stdio.h>
//int main()
//{
//	int a[5][5];
//	int m, n,i,j;
//	printf("请输入一个5*5的矩阵：\n");
//	for (i = 0; i < 5; i++)
//		for (j = 0; j < 5; j++)
//			scanf("%d", &a[i][j]);
//	printf("请输入要进行交换的行（m,n）:\n");
//	scanf("%d%d", &m, &n);
//	int* p1, * p2;
//	p1 = a[m-1];
//	p2 = a[n - 1];
//	for (i = 0; i < 5; i++)
//	{
//		int temp = p1[i];
//		p1[i] = p2[i];
//		p2[i] = temp;
//	}
//	for (i = 0; i < 5; i++)
//	{
//		for (j = 0; j < 5; j++)
//			printf("%d ", a[i][j]);
//		printf("\n");
//	}
//	return 0;
//}
// 
// 100:有五个学生，每个学生有3门课的成绩，从键盘输入以上数据（包括学生号，姓名，三门课成绩），
// 计算出平均成绩，况原有的数据和计算出的平均分数存放在磁盘文件"stud"中。
//#include<stdio.h>
//struct Sco
//{
//	float one;
//	float two;
//	float three;
//};
//struct Stu
//{
//	char name[10];
//	char no[20];
//	struct Sco sc;
//	float avge;
//};
//int main()
//{
//	struct Stu st[5];
//	FILE* pf = fopen("text.txt", "w");
//	struct Stu* p1 = st;
//	printf("请输入3个学生的信息：姓名，学号，三门成绩：\n");
//	int i = 0;
//	for (i = 0; i < 3; i++)
//	{
//		p1 = p1 + i;
//		scanf("%s%s%f%f%f", p1->name, p1->no, &p1->sc.one, &p1->sc.two, &p1->sc.three);
//		p1->avge = (p1->sc.one + p1->sc.two + p1->sc.three) / 3;
//		fprintf(pf, "%-8s %-10s %.2f %.2f %.2f %.2f\n", p1->name, p1->no, p1->sc.one, p1->sc.two, p1->sc.three, p1->avge);
//	}
//	printf("写入完毕\n");
//	fclose(pf);
//	return 0;
//}

// 99:有两个磁盘文件A和B,各存放一行字母，要求把这两个文件中的信息合并（按字母顺序排列），输出到一个新文件C中。
//#include<stdio.h>
//int main()
//{
//	FILE* p1 = fopen("text.txt", "r");
//	if (p1 == NULL)
//		{
//			printf("文件打开失败");
//			return -1;
//		}
//	FILE* p2 = fopen("texa.txt", "r");
//	if (p2 == NULL)
//	{
//		printf("文件打开失败");
//		return -1;
//	}
//	FILE* p3 = fopen("texc.txt", "w");
//	if (p3 == NULL)
//	{
//		printf("文件打开失败");
//		return -1;
//	}
//	char str[100];
//	int i, j;
//	char ch;
//	fgets(str,100, p1);
//	int len = strlen(str);
//	char* ph = (str + len);
//	ph = ph - 1;  //清除换行符
//	fgets(ph, 100, p2);
//	len = strlen(str);
//	for (i = 0; i < len-1; i++)
//	{
//		for (j = 0; j < len - i - 1; j++)
//		{
//			if (str[j] > str[j + 1])
//			{
//				char temp = str[j];
//				str[j] = str[j + 1];
//				str[j + 1] = temp;
//			}
//		}
//	}
//	puts(str);
//	fputs(str, p3);
//	printf("写入完毕\n");
//	fclose(p1);
//	fclose(p2);
//	fclose(p3);
//	return 0;
//}

// 98:从键盘输入一个字符串，将小写字母全部转换成大写字母，然后输出到一个磁盘文件"test"中保存。
//  输入的字符串以！结束。
//#include<stdio.h>
//int main()
//{
//	FILE* pf = fopen("text.txt", "w");
//	if (pf == NULL)
//	{
//		printf("文件打开失败");
//		return -1;
//	}
//	char ch;
//	printf("请输入一串字符串：\n");
//	while ((ch = getchar()) != '!')
//	{
//		if (ch >= 'a' && ch <= 'z')
//			ch -= 32;
//		fputc(ch, pf);
//	}
//	printf("文件写入完毕\n");
//	fclose(pf);
//	return 0;
//}

////97:从键盘输入一些字符，逐个把它们送到磁盘上去，直到输入一个#为止
//#include<stdio.h>
//int main()
//{
//	FILE* fp;
//	fp = fopen("text.txt", "w");
//	if (fp == NULL)
//	{
//		printf("文件打开失败");
//		return -1;
//	}
//	char ch;
//	printf("请输入一串字符串：\n");
//	while ((ch = getchar()) != '#')
//	{
//		fputc(ch,fp);
//	}
//	printf("写入完毕\n");
//	fclose(fp);
//	return 0;
//}
// 
// 
// 96：计算字符串中子串出现的次数 。
//#include<stdio.h>
//#include<string.h>
//int main()
//{
//	char str[50];
//	char s[20];
//	int count = 0;
//	int i, j;
//	printf("请输入一串字符（<49）\n:");
//	gets(str);
//	printf("请输入字串字符串：\n");
//	gets(s);
//	char* p1 = NULL;
//	for (i = 0; str[i] != '\0'; i++)
//	{
//		p1 = (str + i);
//		for (j = 0; s[j] != '\0'; j++)
//		{
//			if (*p1++ != s[j])
//				break;
//		}
//		if (s[j] == '\0')
//			count++;
//	}
//	printf("count = %d", count);
//	return 0;
//}
// 
// 94：猜数字游戏
// 
// 91: 查看当前时间
//#include<stdio.h>
//#include<time.h>
//int main()
//{
//	time_t reward;  //定义一个时间戳
//	struct tm* timeinfo;  
//
//	time(&reward);
//	timeinfo = localtime(&reward);
//
//	printf("%s", asctime(timeinfo));
//	return 0;
//}
//
//
// 89:某个公司采用公用电话传递数据，数据是四位的整数，在传递过程中是加密的，加密规则如下：
//  每位数字都加上5,然后用和除以10的余数代替该数字，再将第一位和第四位交换，第二位和第三位交换。
//#include<stdio.h>
//void swap(int* a,int* b)
//{
//	int temp = *a;
//	*a = *b;
//	*b = temp;
//}
//int main()
//{
//	int num, i = 4;
//	int a1[10];
//	printf("请输入一位4位数的整数：\n");
//	scanf("%d", &num);
//	while (num)
//	{
//		a1[i] = num % 10;
//		num = num / 10;
//		i--;
//	}
//	for (i = 1; i <= 4; i++)
//	{
//		a1[i] = (a1[i] + 5) % 10;
//	}
//	swap(&a1[1], &a1[4]);
//	swap(&a1[2], &a1[3]);
//	for (i = 1; i <= 4; i++)
//		printf("%d", a1[i]);
//	return 0;
//}
// 
// 88:读取7个数（1—50）的整数值，每读取一个值，程序打印出该值个数的 ＊。
//#include<stdio.h>
//int main()
//{
//	int i = 0;
//	int num = 0;
//	for (i = 0; i < 7; i++)
//	{
//		printf("请输入一个数(1-50)：\n");
//		scanf("%d", &num);
//		if (num >= 1 && num <= 50)
//		{
//			for (int j = 0; j < num; j++)
//				printf("* ");
//			printf("\n");
//		}
//		else
//			printf("输入错误，请重新输入：\n");
//	}
//	return 0;
//}
// 
//// 86:两个字符串连接程序(不使用strcat) 。
//#include<stdio.h>
//#include<string.h>
//int main()
//{
//	char c1[50];
//	char c2[30];
//	int len = 0, i;
//	printf("请输入两个字符串：\n");
//	gets(c1);
//	gets(c2);
//	int len2 = strlen(c2);
//	len = strlen(c1);
//	if (len + len2 > 50)
//	{
//		printf("输出字符串过长！");
//		return -1;
//	}
//	for (i = 0; c2[i] != '\0'; i++)
//	{
//		c1[len] = c2[i];
//		len++;
//	}
//	c1[len] = '\0';
//	puts(c1);
//	return 0;
//}

// 85:判断一个素数能整除几个9组成的数
//#include<stdio.h>
//int main()
//{
//	int n = 9;
//	int count = 1;
//	unsigned sum = n;
//	int num = 0;
//	printf("请输入一个素数：\n");
//	scanf("%d", &num);
//	while (sum % num != 0)
//	{
//		sum = sum * 10 + n;
//		count++;
//	}
//	printf("%d可以被%d个9整除，值为%u\n", num, count, sum);
//	return 0;
//}
// 
// 84： 输入一个偶数，他等于两个素数的和，求这两个素数：
//#include<stdio.h>
//#include<math.h>
//int main()
//{
//	void Su(int num);
//	int ifsu(int num);
//	int num = 0;
//	printf("请输入一个偶数：\n");
//	scanf("%d", &num);
//	if (num % 2 != 1 && num<=1)
//	{
//		printf("输入错误！");
//		return -1;
//	}
//	Su(num);
//	return 0;
//}
//void Su(int num)
//{
//	int i = 0;
//	for (i = 2; i < num; i++)
//	{
//		if (ifsu(i) && ifsu(num-i))
//		{
//			break;
//		}
//	}
//	if (i < num)
//		printf("这个数是两个素数的和：%d + %d", i, num-i);
//	else
//		printf("这个值不是两个素数的和！");
//}
////1--是  0--不是
//int ifsu(int num)
//{
//	if (num == 2 || num == 3)
//		return 1;
//	if (num % 2 == 0)
//		return 0;
//	for (int i = 3; i <= sqrt(num); i += 2)
//	{
//		if (num % i == 0)
//			return 0;
//	}
//	return 1;
//}

// 83:求0—7所能组成的奇数个数。
//#include<stdio.h>
//int main()
//{
//	int j, i = 1;
//	int sum = 4,len = 4;
//	printf("当有%d位奇数时可以组成%d位奇数\n", i, len);
//	for (i = 2; i <= 8; i++)
//	{
//		if (i <= 2)
//			len = len * 7; //因为不能为0，为0在只有一个奇数时就已经计算过了
//		else
//			len = len * 8;
//		printf("当有%d位奇数时可以组成%d位奇数\n", i, len);
//		sum += len;
//
//	}
//	printf("奇数的个数位：%d",sum);
//	return 0;
//}



// 82:八进制转换为十进制
//#include<stdio.h>
//#include<math.h>
//int main()
//{
//	int num;
//	int sum = 0;
//	printf("请输入一个八进制数字：\n");
//	scanf("%d", &num);
//	int i = 0;
//	while (num)
//	{
//		int a = num % 10;
//		sum += a * pow(8, i);
//		num = num / 10;
//		i++;
//	}
//	printf("%d", sum);
//	return 0;
//}
// 
// 81：809*??=800*??+9*?? 其中??代表的两位数, 809*??为四位数，8*??的结果为两位数，9*??的结果为3位数。
//求??代表的两位数，及809*??后的结果。
//#include<stdio.h>
//int main()
//{
//	int num = 0;
//	int i, j;
//	//2位数 10-99
//	for (i = 10; i < 100; i++)
//	{
//		if (809 * i < 10000 && 8 * i < 100 && (9 * i < 1000 && 9*i>=100))
//			break;
//		else
//			continue;
//	}
//	j = 800 * i + 9 * i;
//	printf("%d为个这两位数\n结果是%d = 800*%d + 9*%d", i, j, i, i);
//	return 0;
//}

// 
// 80:海滩上有一堆桃子，五只猴子来分。
// 第一只猴子把这堆桃子平均分为五份，多了一个，这只 猴子把多的一个扔入海中，拿走了一份。
// 第二只猴子把剩下的桃子又平均分成五份，又多了 一个，它同样把多的一个扔入海中，拿走了一份，
// 第三、第四、第五只猴子都是这样做的， 问海滩上原来最少有多少个桃子？

//假设x个桃
//1.  (x-1)/5*4
//2.  ((x-1)/5*4-1)/5*4
//#include<stdio.h>
//int main()
//{
//	int num = 0;
//	int count = 0;
//	int i = 0;
//	int f = 1;
//	while (f != 0)
//	{
//		num++;
//		count = num;  //因为之后的循环num会改变，所以使用另一个变量来存储
//		for (i = 0; i < 5; i++)
//		{
//			if (((count - 1) % 5) == 0) //判断是否能够被分为5等分
//				count = (count - 1) / 5 * 4;
//			else
//				break;
//		}
//		if (i == 5)
//			f =0;
//	}
//	printf("最少有%d个桃", num);
//	return 0;
//}
// 
// 79:字符串排序,以给出字符串数组
//#include<stdio.h>
//#include<string.h>
//#define MAX 5
//int main()
//{
//	char* str[MAX] = { "hello","world","abc","pati","ence" };
//	char** p1 = str;
//	int i;
//	for ( i= 0; i < MAX-1; i++)
//	{
//		for (int j = 0; j < MAX - i-1; j++)
//		{
//			if (strcmp(*(p1 + j), *(p1 + j + 1)) > 0)
//			{
//				char* temp = *(p1 + j);
//				*(p1 + j) = *(p1 + j + 1);
//				*(p1 + j + 1) = temp;
//			}
//		}
//	}
//	for (i = 0; i < MAX; i++)
//		printf("%s\n", *(p1++));
//	return 0;
//}

// 
// 
// 78:找到年龄最大的人，并输出。(结构体指针)
//#include<stdio.h>
//struct Per
//{
//	int gae;
//	char name[10];
//};
//int main()
//{
//	struct Per pers[3];
//	int i = 0;
//	struct Per* p = pers;
//	struct Per* q = NULL;
//	int max = 0;
//	printf("请输入3个人的信息：年龄 姓名：\n");
//	for (i = 0; i < 3; i++)
//	{
//		scanf("%d%s", &(p + i)->gae, (p + i)->name);
//		if ((p + i)->gae > max)
//		{
//			q = (p+i);
//			max = (p + i)->gae;
//		}
//	}
//	if (q != NULL)
//	{
//		printf("年龄最大的是%s,为%d", q->name, q->gae);
//	}
//	else
//		printf("输入错误");
//	return 0;
//}
// 
// 
// 76:编写一个函数，输入n为偶数时，调用函数求1/2+1/4+...+1/n,当输入n为奇数时，调用函数1/1+1/3+...+1/n(利用函数指针)。
//#include<stdio.h>
//int main()
//{
//	//声明函数：
//	double (*p)(int);
//	double J(int);
//	double Ad(int);
//	//输入：
//	int num = 0;
//	double sum = 0;
//	printf("请输入一个数：\n");
//	scanf("%d", &num);
//	//判断：
//	if (num % 2 == 0)
//		p = Ad;
//	else
//		p = J;
//
//	sum = (*p)(num);
//	//输出
//	printf("sum = %lf", sum);
//	return 0;
//}
////奇数函数：
//double J(int a)
//{
//	double sum = 0;
//	int i = 0;
//	for (i = 1; i <= a; i += 2)
//		sum += (1.0 / i);
//	return sum;
//}
//double Ad(int b)
//{
//	double sum = 0;
//	int i = 0;
//	for (i = 2; i <= b; i += 2)
//		sum += (1.0 / i);
//	return sum;
//}

// 75:输入一个整数，并将其反转后输出
//#include<stdio.h>
//int main()
//{
//	int num = 0;
//	int arr[10];
//	int i = 0;
//	printf("请输入一个整数：");
//	scanf("%d", &num);
//	while (num != 0)
//	{
//		arr[i++] = num % 10;
//		num = num / 10;
//	}
//	for (int j = 0; j < i; j++)
//		printf("%d", arr[j]);
//	return 0;
//}
// 
// 74:链接两个链表：
//#include<stdio.h>
//#include<stdlib.h>
//struct Node
//{
//	char data;
//	struct Node* next;
//};
//int main()
//{
//	//声明函数：
//	struct Node* Lian(struct Node** head);
//	void FRee(struct Node** head);
//	//定义两个链表头节点
//	struct Node* on_head = NULL;
//	struct Node* tw_head = NULL;
//	//调用函数，创建链表
//	on_head = Lian(&on_head);
//	tw_head = Lian(&tw_head);
//	//链接链表
//	struct Node* cur = NULL;
//	if (on_head != NULL)
//	{
//		cur = on_head;
//		while (cur->next != NULL) cur = cur->next;
//		cur->next = tw_head;
//	}
//	else
//		on_head = tw_head;
//	//打印链表内容
//	cur = on_head;
//	while (cur != NULL)
//	{
//		printf("%c->", cur->data);
//		cur = cur->next;
//	}
//	printf("over\n");
//	return 0;
//}
////创建链表：
//struct Node* Lian(struct Node** head)
//{
//	struct Node* ph = (struct Node*)malloc(sizeof(struct Node));
//	struct Node* cur;
//	*head = ph;
//	char ch;
//	printf("请输入一串字符串：\n");
//	ch = getchar();
//	if (ch == '\n')
//	{
//		*head = NULL;
//		return *head;
//	}
//	ph->data = ch;
//	ph->next = NULL;
//	while ((ch = getchar()) != '\n')
//	{
//		cur = (struct Node*)malloc(sizeof(struct Node));
//		cur->data = ch;
//		cur->next = NULL;
//		ph->next = cur;
//		ph = cur;
//	}
//	return *head;
//}
////释放链表：
//void FRee(struct Node** head)
//{
//	struct Node* current = *head;
//	while (current != NULL)
//	{
//		struct Node* temp = current;  // 临时保存当前节点
//		current = current->next;      // 移动到下一个节点
//		free(temp);                   // 释放当前节点
//	}
//	*head = NULL;  // 防止悬空指针
//}

// 
//// 73:反向输出一个链表
//#include<stdio.h>
//#include<stdlib.h>
//struct Node
//{
//	char data;
//	struct Node* next;
//};
//void Reverse(struct Node* node)
//{
//	if (node == NULL)
//		return;
//	else
//	{
//		Reverse(node->next);
//		printf("%c->", node->data);
//		return;
//	}
//}
//int main()
//{
//	struct Node* Lian(struct Node** head);
//	struct Node* head = NULL;
//	head = Lian(&head);
//	printf("正向输出：\n");
//	struct Node* cur = head;
//	while (cur != NULL)
//	{
//		printf("%c -->", cur->data);
//		cur = cur->next;
//	}
//	if (cur == NULL)
//		printf("over\n");
//	//使用递归逆向输出：
//	printf("逆向：\n");
//	Reverse(head);
//	printf("over\n");
//
//	return 0;
//}
//struct Node* Lian(struct Node** head)
//{
//	struct Node* ph = NULL;
//	struct Node* cur = NULL;
//	ph = (struct Node*)malloc(sizeof(struct Node));
//	char ch;
//	*head = ph;
//	printf("请输入一串字符:");
//	ch = getchar();
//	if (ch == '\n')
//	{
//		*head = NULL;
//		return *head;
//	}
//	ph->data = ch;
//	ph->next = NULL;
//	while ((ch = getchar()) != '\n')
//	{
//		cur = (struct Node*)malloc(sizeof(struct Node));
//		cur->data = ch;
//		cur->next = NULL;
//		ph->next = cur;
//		ph = cur;
//	}
//	return *head;
//}

//// 创建链表：
//#include<stdio.h>
//#include<stdlib.h>
//struct Node
//{
//	int data;
//	struct Node* next;
//};
//int main()
//{
//	struct Node* Lian(struct Node** head);
//	struct Node* head = NULL;
//	head = Lian(&head);
//	struct Node* cur = head;
//	while (cur->data != -1)
//	{
//		printf("%d->", cur->data);
//		cur = cur->next;
//	}
//	printf("over\n");
//  cur = head;
//	while (cur != NULL)
//	{
//	  struct Node* temp = cur;
//    cur = cur->next;
//    free(temp);
//	}
//	return 0;
//}
//struct Node* Lian(struct Node** head)
//{
//	int num;
//	struct Node* ph = NULL;
//	struct Node* cur = NULL;
//	ph = (struct Node*)malloc(sizeof(struct Node));
//	*head = ph;
//	printf("输入一串数字（以-1结尾）:\n");
//	scanf("%d", &num);
//	//if (num == -1)
//	//{
//	//	*head = NULL;
//	//	return *head;
//	//}
//	ph->data = num;
//	ph->next = NULL;
//	while (ph->data != -1)
//	{
//		scanf("%d", &num);
//		cur = (struct Node*)malloc(sizeof(struct Node));
//		cur->data = num;
//		cur->next = NULL;
//		ph->next = cur;
//		ph = cur;
//	}
//	return *head;
//}
// 72:创建一个链表。(单链表，头结点含值)
//#include<stdio.h>
//#include<stdlib.h>
//struct Node
//{
//	char data;
//	struct Node* next;
//};
//int main()
//{
//	struct Node* Lian(struct Node** head);
//	struct Node* head = NULL;
//	head = Lian(&head);
//	struct Node* cur = head;
//	while (cur != NULL)
//	{
//		printf("%c -->", cur->data);
//		cur = cur->next;
//	}
//	if (cur == NULL)
//		printf("over\n");
//	return 0;
//}
//struct Node* Lian(struct Node** head)
//{
//	struct Node* ph = NULL;
//	struct Node* cur = NULL;
//	ph = (struct Node*)malloc(sizeof(struct Node));
//	char ch;
//	*head = ph;
//	printf("请输入一串字符:");
//	ch = getchar();
//	if (ch == '\n')
//	{
//		*head = NULL;
//		return *head;
//	}
//	ph->data = ch;
//	ph->next = NULL;
//	while ((ch = getchar()) != '\n')
//	{
//		cur = (struct Node*)malloc(sizeof(struct Node));
//		cur->data = ch;
//		cur->next = NULL;
//		ph->next = cur;
//		ph = cur;
//	}
//	return *head;
//}
// 71:编写input()和output()函数输入，输出5个学生的数据记录。(结构体)
//#include<stdio.h>
//struct Stu
//{
//	char name[10];
//	char sex[5];
//	int age;
//} s[5];
//void input()
//{
//	int i = 0;
//	for (i = 0; i < 5; i++)
//		scanf("%s%s%d", s[i].name, s[i].sex, &s[i].age);
//}
//void output()
//{
//	int i = 0;
//	for (i = 0; i < 5; i++)
//		printf("%6s-%3s-%4d\n", s[i].name, s[i].sex, s[i].age);
//}
//int main()
//{
//	printf("请输入5个学生的成绩：姓名，性别，年龄：\n");
//	input();
//	printf("输出5个学生的成绩：姓名，性别，年龄：\n");
//	output();
//}
// 
// 
// 70：写一个函数，求一个字符串的长度，在 main 函数中输入字符串，并输出其长度。
//#include<stdio.h>
//int StrL(char ch[])
//{
//	int count = 0;
//	int i = 0;
//	while (ch[i] != '\0')
//	{
//		i++;
//		count++;
//	}
//	return count;
//}
//int main()
//{
//	char ch[50];
//	printf("请输入一个字符串：");
//	gets(ch);
//	int len = StrL(ch);
//	printf("字符串中有%d个字符", len);
//	return 0;
//}
// 
// 69:有n个人围成一圈，顺序排号。从第一个人开始报数（从1到3报数），凡报到3的人退出圈子，
// 问最后留下的是原来第几号的那位。
//#include<stdio.h>
//int main()
//{
//	int num, i, j,k;
//	int arr[50];
//	printf("请输入人数:");
//	scanf("%d", &num);
//	for (i = 0; i < num; i++)
//		arr[i] = i + 1;
//	
//	i = 0;  //数组下标
//	j = 0;  //报数数字
//	k = num;  //数组长度
//	while (num != 1)
//	{
//		if (arr[i] != 0)   //报3时数组内容为0，如果不是0，则往下报，是0跳过
//			j++;
//		if (j == 3)
//		{
//			j = 0;
//			arr[i] = 0;
//			num--;
//		}
//		i++;
//		if (i == k)  //此时到了队尾后一个元素，因为队尾那个元素也需要进行判断，这个元素相当于a[0];
//			i = 0;
//	}
//	//循环寻找存活人数
//	
//	for (i = 0; i < k; i++)
//		if (arr[i] != 0)
//			printf("存活人数为：%d\n标号是：%d", num,arr[i]);
//	return 0;
//}
// 
// 
// 68:有 n 个整数，使其前面各数顺序向后移 m 个位置，最后m个数变成最前面的 m 个数。
//#include<stdio.h>
//int main()
//{
//	int arr[50];
//	int a1[50];
//	int i, j,num,m;
//	printf("请输入需要输入的位数：");
//	scanf("%d", &num);
//	for (i = 0; i < num; i++)
//		scanf("%d", &arr[i]);
//	printf("请输入需要移动的位数：");
//	scanf("%d", &m);
//	//把后m位复制到a1数组：
//	j = 0;
//	for (i = num - m ; i < num; i++)
//	{
//		a1[j] = arr[i];
//		j++;
//	}
//
//	//顺序移动arr：
//	for (i = num - m - 1; i >= 0; i--)
//		arr[i + m] = arr[i];
//
//	//把a1数组前m位移动到arr：
//	for (i = 0; i < m; i++)
//		arr[i] = a1[i];
//
//	//打印：
//	for (i = 0; i < num; i++)
//		printf("%d ", arr[i]);
//
//	return 0;
//}
// 
//// 67:输入数组，最大的与第一个元素交换，最小的与最后一个元素交换，输出数组。
//#include<stdio.h>
//void print(int arr[], int len)
//{
//	for (int i = 0; i < len; i++)
//		printf("%d  ", arr[i]);
//	printf("\n");
//}
//void Max(int arr[], int len)
//{
//	int temp;
//	int max = 0;
//	for (int i = 1; i < len; i++)
//	{
//		if (arr[i] > arr[max])
//			max = i;
//	}
//	if (max != 0)
//	{
//		temp = arr[0];
//		arr[0] = arr[max];
//		arr[max] = temp;
//	}
//
//}
//void Min(int arr[], int len)
//{
//	int temp;
//	int min = 0;
//	for (int i = 1; i < len; i++)
//	{
//		if (arr[i] < arr[min])
//			min = i;
//	}
//	if (min != len-1)
//	{
//		temp = arr[len-1];
//		arr[len-1] = arr[min];
//		arr[min] = temp;
//	}
//}
//int main()
//{
//	int arr[50];
//	int i = 0;
//	printf("请输入一个整型数组(<50)，-1停止：");
//	scanf("%d", &arr[i]);
//	while (arr[i] != -1)
//		scanf("%d", &arr[++i]);
//	printf("改变前：");
//	print(arr, i);
//	Max(arr, i);
//	Min(arr, i);
//	printf("改变后：");
//	print(arr, i);
//
//	return 0;
//}

/// 66:输入3个数a,b,c，按大小顺序输出(指针)
//#include<stdio.h>
//void swap(int* p, int* q)
//{
//	int t = *p;
//	*p = *q;
//	*q = t;
//}
//int main()
//{
//	int a, b, c;
//	printf("输入三个数：");
//	scanf("%d%d%d", &a, &b, &c);
//	printf("排序前：%d--%d--%d\n", a, b, c);
//	int* p, * q, * w,t;
//	p = &a;
//	q = &b;
//	w = &c;
//	if (a < b)
//		swap(p, q);
//	if (a < c)
//		swap(p, w);
//	if (b < c)
//		swap(q,w);
//	printf("排序后：%d--%d--%d", a, b, c);
//	return 0;
//}



// 61:打印出杨辉三角形（要求打印出10行）。
//#include<stdio.h>
//int main()
//{
//	int arr[10][10];
//	int i, j;
//	for (i = 0; i < 10; i++)
//	{
//		arr[i][0] = 1;
//		arr[i][i] = 1;
//		for (j = 1; j < i; j++)
//			arr[i][j] = arr[i - 1][j] + arr[i - 1][j - 1];
//	}
//	for (i = 0; i < 10; i++)
//	{
//		for (j = 0; j <= i; j++)
//			printf("%4d",arr[i][j]);
//		printf("\n");
//	}
//	return 0;
//}
// 
// 54:取一个整数 a 从右端开始的 4～7 位。
//#include<stdio.h>
//int main()
//{
//	int a = 0;
//	printf("请输入整数：");
//	scanf("%d", &a);
//	int b = a >> 4;
//	int c = ~(~0 << 4);
//	b = b & c;
//	printf("%d \n %d", a, b);
//	return 0;
//}
// 
//40:将一个数组逆序输出
//#include<stdio.h>
//void print(int arr[], int sz)
//{
//	for (int i = 0; i < sz; i++)
//		printf("%d ", arr[i]);
//	printf("\n");
//}
//void Re(int arr[], int sz)
//{
//	int star = 0;
//	int end = sz - 1;
//	int temp;
//	while (star < end)
//	{
//		temp = arr[star];
//		arr[star] = arr[end];
//		arr[end] = temp;
//		star++;
//		end--;
//	}
//}
//int main()
//{
//	int arr[] = { 0,1,2 ,3, 4, 5, 6, 7, 8, 9 };
//	int sz = sizeof(arr) / sizeof(arr[0]);
//	int i = 0;
//	printf("原始：");
//	print(arr, sz);
//	Re(arr, sz);
//	printf("逆序：");
//	print(arr, sz);
//	return 0;
//}


// 39:题目：有一个已经排好序的数组。现输入一个数，要求按原来的规律将它插入数组中。
//#include<stdio.h>
//void Insert(int arr[], int num,int sz)
//{
//	int i = 0;
//	int j;
//	while (arr[i] < num) i++;
//	for (j = sz; j >= i; j--)
//	{
//		arr[j + 1] = arr[j];
//	}
//	arr[j + 1] = num;
//
//}
//int main()
//{
//	int arr[50] = { 1,3,6,10,15,26,37,48,59,60 };
//	int num, i;
//	printf("请输入一个数：");
//	scanf("%d", &num);
//	int sz = 10;
//	Insert(arr, num,sz-1);
//	for (i = 0; i <= sz; i++)
//		printf("%d ", arr[i]);
//	return 0;
//}


// 38：求一个3*3矩阵对角线元素之和
//#include<stdio.h>
//#define MAX 3
//int Sum(int arr[][3])
//{
//	int sum = 0;
//	int i, j;
//	for (i = 0; i < MAX; i++)
//	{		
//		sum += arr[i][i];
//	}
//	return sum;
//}
//int main()
//{
//	int arr[MAX][MAX];
//	int i,j;
//	printf("请输入一个3*3矩阵");
//	for (i = 0; i < MAX; i++)
//		for (j = 0; j < MAX; j++)
//			scanf("%d", &arr[i][j]);
//	int sum = Sum(arr);
//	printf("sum = %d", sum);
//	return 0;
//}

// 37:对10个数进行排序。
//#include<stdio.h>
//int main()
//{//冒泡排序
//	int arr[10] = { 0 };
//	int temp, i,j;
//	printf("输入10个整数：");
//	for (i = 0; i < 10; i++)
//		scanf("%d", &arr[i]);
//	for (i = 0; i < 9; i++)
//	{
//		for (j = 0; j < 10 - i-1; j++)
//		{
//			if (arr[j] > arr[j + 1])
//			{
//				temp = arr[j];
//				arr[j] = arr[j + 1];
//				arr[j + 1] = temp;
//			}
//		}
//	}
//	for (i = 0; i < 10; i++)
//		printf("%d ", arr[i]);
//	return 0;
//}


// 36.求100之内的素数。
//#include<stdio.h>
//int main()
//{
//	int i, j;
//	for (i = 2; i < 100; i++)
//	{
//		if (i == 2 || i == 3)
//		{
//			printf("%d ", i);
//			continue;
//		}
//		for (j = 2; j <= i/2; j++)
//		{
//			if (i % j == 0)
//				break;
//		}
//		if (j == i/2 + 1)
//			printf("%d ", i);
//	}
//	return 0;
//}
 
//// 35:字符串反转，如将字符串 "www.runoob.com" 反转为 "moc.boonur.www"。
//#include<stdio.h>
//#include<string.h>
//void change(char str[],int sz)
//{
//	int i, j, temp;
//	j = sz - 1;
//	i = 0;
//	//for (i = 0; i < sz / 2; i++)
//	while(i<j)
//	{
//		temp = str[i];
//		str[i] = str[j];
//		str[j] = temp;
//		j--;
//		i++;
//	}
//	printf("转换后：%s", str);
//}
//int main()
//{
//	char str[50];
//	printf("请输入一串字符串：");
//	gets(str);
//	int sz = strlen(str);
//	change(str,sz);
//	return 0;
//}
// 
// 33:判断一个数字是否为质数。
//#include<stdio.h>
//#include<math.h>
//int main()
//{
//	int num = 0;
//	printf("请输入一个数字：");
//	scanf("%d", &num);
//	int a = tof(num);
//	if (a == 0)
//		printf("是质素");
//	else
//		printf("不是质素");
//	return 0;
//}
//int tof(int a)
//{
//	int i;
//	if (a > 1 && a <= 3)
//		return 0;
//	if (a % 2 == 0)
//		return 1;
//	for (i = 3; i <= sqrt(a); i += 2)
//	{
//		if (a % i == 0)
//			return 1;
//	}
//	return 0;
//}
// 32:删除一个字符串中的指定字母，如：字符串 "aca"，删除其中的 a 字母
//#include<stdio.h>
//int main()
//{
//	char ch[50];
//	char ch1;
//	int i, j;
//	printf("请输入一串字符：");
//	gets(ch);
//	printf("请输入要删除的字符：");
//	ch1 = getchar();
//	j = 0;
//	for (i = 0; ch[i] != '\0'; i++)
//	{
//		if (ch[i] != ch1)
//		{
//			ch[j] = ch[i];
//			j++;
//		}
//	}
//	ch[j] = '\0';
//	printf("删除后：%s", ch);
//	return 0;
//}
// 
// 31:请输入星期几的第一个字母来判断一下是星期几，如果第一个字母一样，则继续判断第二个字母。
//#include<stdio.h>
//int main()
//{
//	char a, b;
//	printf("请输入一个字母：");
//	a = getchar();
//	getchar();
//	switch (a)
//	{
//	case 'm':printf("是星期一\n"); break;
//	case 'w':printf("是星期三\n"); break;
//	case 'f':printf("是星期五\n"); break;
//	case 't': {
//		printf("请输入一个字母：");
//		b = getchar();
//		if (b == 'u')
//			printf("是星期二");
//		else if (b == 'h')
//			printf("是星期四");
//		else
//			printf("error");
//	}; break;
//	case 's': {
//		printf("请输入一个字母：");
//		b = getchar();
//		if (b == 'a')
//			printf("是星期六");
//		else if (b == 'u')
//			printf("是星期天");
//		else
//			printf("error");
//	}; break;
//	default:printf("error");
//	}
//	return 0;
//}

//30.判断回文：
//#include<stdio.h>
//int main()
//{
//	int arr[10] = {0};
//	int num = 0;
//	int i, j;
//	printf("请输入5个数字（0-9）：");
//	for (i = 0; i < 5; i++)
//		scanf("%d", &arr[i]);
//	j = 0;
//	i = 5;
//	while (j < i)
//	{
//		if (arr[j] != arr[i])
//			break;
//		j++;
//		i--;
//	}
//	if (i > j) printf("不是回文");
//	else printf("是回文");
//	return 0;
//}


//// 29:题目：给一个不多于5位的正整数，要求：一、求它是几位数，二、逆序打印出各位数字。
//#include<stdio.h>
//int main()
//{
//	int num = 0, count = 0;
//	int arr[10] = { 0 };
//	int i = 0;
//	printf("请输入一位正整数(1-10000):");
//	scanf("%d", &num);
//	while (num != 0)
//	{
//		arr[i++] = num % 10;
//		num = num / 10;
//		count++;
//	}
//	for (i = 0; i < count; i++)
//		printf("%d ", arr[i]);
// printf("\ncount = %d\n",count);
//	return 0;
//}
// 
// 28：有5个人坐在一起，问第五个人多少岁？他说比第4个人大2岁。问第4个人岁数，他说比第3个人大2岁。
//// 问第三个人，又说比第2人大两岁。问第2个人，说比第一个人大两岁。最后问第一个人，他说是10岁。请问第五个人多大？
//#include<stdio.h>
//int Age(int i)
//{
//	if (i == 1)
//		return 10;
//	else
//		return 2 + Age(i - 1);
//}
//int main()
//{
//	int age;
//	age = Age(5);
//	printf("第5个人的年龄是%d", age);
//	return 0;
//}


// 27:题目：利用递归函数调用方式，将所输入的5个字符，以相反顺序打印出来。
//#include<stdio.h>
////天才！！！
//char ord(char ch[],int i)
//{
//	int a = 0;
//	if (i == 4)
//		return i;
//	else
//	{
//		a = ord(ch, i + 1);
//		printf("%c ", ch[a]);
//		return i;
//	}
//}
//int main()
//{
//	char ch[5];
//	int i = 0;
//	printf("请输入5个字符：");
//	for (i = 0; i < 5; i++)
//		ch[i] = getchar();
//	int k = ord(ch, 0);
//	printf("%c ", ch[0]);
//	return 0;
//}

//26：题目：利用递归方法求 5!。
//#include<stdio.h>
//int Dg(int i)
//{
//	if (i == 1)
//		return 1;
//	else
//		return i * Dg(i - 1);
//}
//int main()
//{
//	int a = 5;
//	printf("%d的阶乘是%d\n", a, Dg(a));
//	return 0;
//}


//// 25.题目：求 1 + 2! + 3! + ... + 20! 的和。
//#include<stdio.h>
//int main()
//{
//	long long sum = 1;  //注意 20！的和数值太大，需要使用long long类型
//	int i, j;
//	long long num = 1;
//	for (i = 2; i <= 20; i++)
//	{
//		num = 1;
//		for (j = 2; j <= i; j++)
//		{
//			num *= j;
//		}
//		sum += num;
//	}
//	printf("sum = %lld",sum);
//	return 0;
//}

////24.题目：有一分数序列：2/1，3/2，5/3，8/5，13/8，21/13...求出这个数列的前20项之和。
//#include<stdio.h>
//int main()
//{
//	double fm = 1;
//	double fs = 2;
//	double sum = 0;
//	sum = fs / fm;  // 2/1
//	for (int i = 1; i < 20; i++)
//	{
//		int t = fs + fm;   // t = 3
//		fm = fs;   //fm = 2
//		fs = t;   //fs = 3
//		sum += fs / fm;   
//	}
//	printf("sum = %lf", sum);
//	return 0;
//}

////23.打印出如下图案（菱形）
////   *
////  ***
//// *****
////*******
//// *****
////  ***
////   *
//#include<stdio.h>
//int main()
//{
//	int i, j;
//	int b = 0, st = 0;
//	for (i = 0; i <= 3; i++)
//	{
//		b = 3 - i;
//		for (j = 0; j < b; j++)
//			printf(" ");
//		st = 2 * i + 1;
//		for (j = 0; j < st; j++)
//			printf("*");
//		printf("\n");
//	}
//
//	for (i = 2; i >= 0; i--)
//	{
//		b = 3 - i;
//		for (j = 0; j < b; j++)
//			printf(" ");
//		st = 2 * i + 1;
//		for (j = 0; j < st; j++)
//			printf("*");
//		printf("\n");
//
//	}
//	return 0;
//}

//22 ：两个乒乓球队进行比赛，各出三人，甲队为 a、b、c 三人，乙队为 x、y、z 三人。
//抽签决定比赛名单，有人向队员打听比赛的名单：a 说他不和 x 比，c 说他不和 x、z 比，请编写代码找出三队赛手的名单。
//#include<stdio.h>
//int main()
//{
//	char ch[3] = { 'a','b','c' };
//	char ch1[3] = { 'x','y','z' };
//	//char result[3][2] = { 0 };
//	int count = 3;
//	for (int i = 0; i <=2 ;i++)  //a的对手可能性
//	{
//		for (int j = 0; j < 3; j++) //b的对手可能性
//		{
//			if (ch1[i] != ch1[j])   //对手不能相等
//			{
//				for (int k = 0; k < 3; k++)  //c的对手
//				{
//					if (ch1[k] != ch1[i] && ch1[k] != ch1[j] )  
//					{
//						if (ch1[i] != 'x' && ch1[k] != 'x' && ch1[k] != 'z') //a选手和c选手的限制条件
//							printf("比赛顺序为：a--%c b--%c c --%c", ch1[i], ch1[j], ch1[k]);
//					}
//				}
//			}
//		}
//	}
//	return 0;
//}

// 21：猴子第一天摘下若干个桃子，当即吃了一半，还不瘾，又多吃了一个
//第二天早上又将剩下的桃子吃掉一半，又多吃了一个。以后每天早上都吃了前一天剩下
//的一半零一个。到第10天早上想再吃时，见只剩下一个桃子了。求第一天共摘了多少
//#include<stdio.h>
//int main()
//{
//	int num = 1;
//	for (int day = 9; day > 0; day--) //从第九天开始，因为第10天只剩下了一个，桃子总共吃了九天
//	{
//		num = (num + 1) * 2;
//	}
//	printf("sum = %d", num);
//	return 0;
//}

// 20:一球从100米高度自由落下，每次落地后反跳回原高度的一半；
// 再落下，求它在第10次落地时，共经过多少米？第10次反弹多高？
//#include<stdio.h>
//int main()
//{
//	double h = 100;
//	int i = 0;
//	double sum = 100;//第一次下落的距离
//	for (i = 1; i < 10; i++) //第2-10次距离
//	{
//		h = h / 2.0;
//		sum += h*2;  //先弹起在落下，总距离
//	}
//	printf("共%.5lf米\n第10次反弹%.5lf米\n",sum,h/2);
//	return 0;
//}

// 19:一个数如果恰好等于它的因子之和，这个数就称为"完数"，例如 6=1＋2＋3 ，请编程找出 1000 以内的所有完数。
//#include<stdio.h>
//int main()
//{
//	int  i, j, k;
//	int sum = 0;
//	for (i = 1; i <= 1000; i++)
//	{
//		sum = 0;
//		for (j = 1; j < i; j++)
//		{
//			if (i % j == 0)
//				sum += j;
//		}
//		if (sum == i)
//			printf("%d  ", i);
//	}
//	return 0;
//}

// 18:求 s=a+aa+aaa+aaaa+aa...a 的值，其中 a 是一个数字，
// 例如 2+22+222+2222+22222 (此时共有5个数相加)，几个数相加有键盘控制。
//#include<stdio.h> 
////第二种方法：
//int main()
//{
//	int i, a, k, sum,num;
//	printf("请输入两个数：");
//	scanf("%d%d", &k, &a);
//	sum = a;
//	num = a;
//	for (i = 1; i < k; i++)
//	{
//		num = num * 10 + a;
//		sum += num;
//	}
//	printf("sum = %d", sum);
//	return 0;
//}
//第一种方法：
//#include<math.h>
//int main()
//{
//	int i;
//	int a = 0;
//	int k = 0;
//	int sum = 0;
//	printf("请输入几个数相加：");
//	scanf("%d", &k);
//	printf("请输入一个数字：");
//	scanf("%d", &a);
//	int num = a;
//	sum = a;
//	for (i = 1; i < k; i++)
//	{
//		num += (a * (int)pow(10, i));
//		sum += num;
//	}
//	printf("sum = %d", sum);
//	return 0;
//}

// 17:输入一行字符，分别统计出其中英文字母、空格、数字和其它字符的个数
//#include<stdio.h>
//#include<string.h>
//int main()
//{
//	char str[50];
//	int al = 0, blank = 0, num = 0, other = 0;
//	printf("请输入一串字符：");
//	gets(str);
//	int sz = strlen(str);
//	int i = 0;
//	for (i = 0; i < sz; i++)
//	{
//		if (str[i] == ' ')
//			blank++;
//		else if ((('A' <= str[i]) && ('Z' >= str[i])) || (('a' <= str[i]) && ('z' >= str[i])))
//			al++;
//		else if ((str[i] >= '0') && (str[i] <= '9'))
//			num++;
//		else
//			other++;
//	}
//	printf("字母个数为：%d\n空格：%d\n数字：%d\n其他：%d\n", al,blank,num,other);
//	return 0;
//}

// 16.输入两个正整数m和n，求其最大公约数和最小公倍数
//#include<stdio.h>
//int main()
//{
//	int m, n;
//	printf("输入两个正整数：");
//	scanf("%d%d", &m, &n);
//	int Max(int m, int n);
//	int Min(int m, int n);
//	int max = Max(m, n);
//	int min = Min(m, n);
//	printf("最大公约数是：%d\n", max);
//	printf("最小公倍数是：%d\n", min);
//
//	return 0;
//}
//int Max(int m, int  n)
//{
//	int t = 0;
//	if (m < n)
//	{
//		t = m; m = n; n = t;
//	}
//	while (n != 0)
//	{
//		t = m % n;
//		m = n;
//		n = t;
//	}
//	return m;
//}
//int Min(int m, int n)
//{
//	return (m * n) / Max(m,n);
//}

//15.利用条件运算符的嵌套来完成此题：学习成绩>=90分的同学用A表示，60-89分之间的用B表示，60分以下的用C表示。
//#include<stdio.h>
//int main()  //条件运算符就是三目运算符！！
//{
//	int score = 0;
//	printf("输入成绩：");
//	scanf("%d", &score);
//	char getal = (score >= 60) ? ((score >= 90) ? 'A' : 'B') : 'C';
//	printf("%c", getal);
//	return 0;
//}

// 14.将一个正整数分解质因数。例如：输入 90,打印出 90=2*3*3*5
//#include<stdio.h>
//int main()
//{
//	int num = 0;
//	printf("请输入一个正整数：");
//	scanf("%d", &num);
//	int i, k;
//	printf("%d = ", num);
//	for (i = 2; i <= num; i++)
//	{
//		while (num % i == 0)
//		{
//			printf("%d", i); 
//			num = num / i;
//			if (num != 1) printf("*"); //当输入2时，2/2 == 1，会输入* ---》 2 = 2*，所以是 ！= 1
//		}
//
//	}
//	return 0;
//}

// 13.打印出所有的"水仙花数"，所谓"水仙花数"是指一个三位数
// 各位数字立方和等于该数 本身。例如：153是一个"水仙花数"，因为153=1的三次方＋5的三次方＋3的三次方。
//#include<stdio.h>
//int main()
//{
//	//1.
//	//int i, k, j;
//	//int num = 0;
//	//for (i = 1; i <= 9; i++)
//	//{
//	//	for (j = 0; j <= 9; j++)
//	//	{
//	//		for (k = 0; k <= 9; k++)
//	//		{
//	//			num = i * 100 + j * 10 + k;
//	//			if ((i * i*i + j * j*j +k* k * k) == num)
//	//				printf("%d  ", num);
//	//		}
//	//	}
//	//}
//
//	//2.:
//	int i;
//	int x, y, z;
//	for (i = 100; i <= 999; i++)
//	{
//		x = i % 10;
//		y = (i / 10) % 10;
//		z = (i / 100) % 10;
//		int sum = x * x * x + y * y * y + z * z * z;
//		if(sum == i)
//			printf("%d ",i);
//	}
//	return 0;
//}

// 12:题目：判断 101 到 200 之间的素数。
//#include<stdio.h>
//int main()
//{
//	int i = 0, j = 0;
//	for (i = 101; i <= 200; i+=2)
//	{
//		for (j = 2; j < i; j++)   //121   2---60      
//		{
//			if (i % j == 0)
//				break;
//		}
//		if (j == i)
//			printf("%d  ", i);
//	}
//	return 0;
//}
//#include<stdio.h>
//int main()
//{
//	int i = 0,j = 0;
//	for (i = 101; i <= 200; i++)
//	{
//		for (j = 2; j < i  ; j++)   //121   2---60      
//		{
//			if (i % 1== 0 && i%i==0 && i%j!=0)
//			{
//				printf("%d  ", i);
//				break;
//			}
//			
//		}
//	}
//	return 0;
//}

// 11.目：古典问题：有一对兔子，从出生后第3个月起每个月都生一对兔子，
// 小兔子长到第三个月后每个月又生一对兔子，假如兔子都不死，问每个月的兔子总数为多少？ 
//#include<stdio.h>
//int main()
//{
//	int Tu(int a);
//	int i = 0;
//	for (i = 1; i <= 40; i++)
//		printf("第%d个月：%d\n", (i),Tu(i));
//	return 0;
//}
//int Tu(int a)
//{
//	if (a == 1 || a == 2)
//		return 1;
//	else
//		return Tu(a - 1) + Tu(a - 2);
//}

// 9.题目：要求输出国际象棋棋盘。
//#include<stdio.h>
//int main()
//{
//	int i, j;
//	for (i = 0; i < 8; i++)
//	{
//		for (j = 0; j < 8; j++)
//		{
//			if ((i + j) % 2 == 0)
//				printf(" * ");
//			else
//				printf("   ");
//		}
//		printf("\n");
//	}
//	return 0;
//}

// 8.题目：输出9*9口诀。 
//#include<stdio.h>
//int main()
//{
//	int i, j;
//	for (i = 1; i <= 9; i++)
//	{
//		for (j = 1; j <= i; j++)
//			printf("%d*%d=%d  ", i, j, i * j);
//		printf("\n");
//	}
//	return 0;
//}

// 6.题目：用*号输出字母C的图案。
//#include<stdio.h>
//int main()
//{
//	printf("* * * *\n");
//	printf("*\n");
//	printf("*\n");
//	printf("* * * *\n");
//	return 0;
//}

// 5.题目：输入三个整数x,y,z，请把这三个数由小到大输出
//#include<stdio.h>
//int main()
//{
//	int x, y, z;
//	printf("输入三个整数：");
//	scanf("%d%d%d", &x, &y, &z);
//	if (x > y)
//	{
//		int temp = x;
//		x = y;
//		y = temp;
//	}
//	if (x > z)
//	{
//		int temp = x;
//		x = z;
//		z = temp;
//	}
//	if (y > z)
//	{
//		int temp = y;
//		y = z;
//		z = temp;
//	}
//	printf("%d,%d,%d", x, y, z);
//	return 0;
//}

//// 4.题目：输入某年某月某日，判断这一天是这一年的第几天？ 1.是否闰年 是2月29 否 28   2.判断月份 30 or 31  3.加上日期
//#include<stdio.h>
//int main()
//{
//	int y, m, d;
//	int sum = 0;
//	int i = 0;
//	printf("请输入年月日:(年 月 日)");  //2000 3 5
//	scanf("%d%d%d", &y, &m, &d);
//	if (m > 12)
//	{
//		printf("月份输入错误！\n");
//		return -1;
//	}
//		
//	for (i = 1; i < m; i++)
//	{
//		if ((i == 4) || (i == 6) || (i == 9) || (i == 11))
//			sum += 30;
//		else if (i == 2)
//		{
//			if ((y % 4 == 0 && y % 100 != 0) || (y % 400 == 0))
//			{
//				if (d > 29) {
//					printf("日期输入错误！"); 
//					return -1;
//				}
//				sum += 29;
//			}
//			else
//			{
//				if (d > 28) {
//					printf("日期输入错误！");
//					return -1;
//				}
//				sum += 28;
//			}
//				
//		}
//		else
//			sum += 31;
//	}
//	printf("day = %d",sum += d);
//	
//	return 0;
//}

// 3.题目：一个整数，它加上100后是一个完全平方数，再加上168又是一个完全平方数，请问该数是多少？ -99 21 261 1581
//#include<stdio.h>
//#define MAX 100000
//int main()
//{
//	int i, x = 0, y = 0;
//	for (i = 0; i < MAX; i++)
//	{
//		x = i + 100;
//		for (int j = 1; j<100; j++)
//		{
//			if (j *j==x)
//			{
//				y = x + 168;
//				for (int z = 0; z<100; z++)
//					if (z*z == y)
//					{
//						printf("%d\n", i);
//						break;
//					}
//				y = 0;
//			}
//		}
//	}
//	return 0;
//}

// 2. 
// <10    10*0.1
////10 - 20   10 * 0.1 + (x - 10) * 0.075
////20 - 40   10 * 0.1 + 10 * 0.075 + (x - 20) * 0.05  
////40 - 60  (20 - 40) + (x - 40) * 0.03
////60 - 100 (40 - 60) + (x - 60) * 0.015
////100   (60 - 100) * 0.001
//#include<stdio.h>
//int main()
//{
//	double Count(int m);
//	double sum = 0;
//	double month;
//	printf("请输入当月利润(以万为单位)");
//	scanf("%lf", &month);
//	sum = Count(month);
//	printf("利润为:%.2lf(单位为元)", sum*10000);
//	return 0;
//}
//double Count(m)
//{
//	double mon1, mon2, mon4, mon6,mon8,mon10;
//	mon1 = 10 * 0.1; //10-20
//	mon2 = mon1 + 10 * 0.075;//20-40
//	mon4 = mon2 + 20 * 0.05;//40-60
//	mon6 = mon4 + 20 * 0.03;//60-100
//	mon10 = mon6 + 40 * 0.015;
//	if (m < 10)
//		return m * 0.1;
//	else if (m < 20)
//		return mon1 + (m - 10) * 0.075;
//	else if (m < 40)
//		return mon2 + (m - 20) * 0.05;
//	else if (m < 60)
//		return mon4 + (m - 40) * 0.03;
//	else if (m < 100)
//		return mon6 + (m - 60) * 0.015;
//	else if (m > 100)
//		return mon10 + (m - 100) * 0.01;
//}

//1.
//#include<stdio.h>
//int main()
//{
//	int i = 0, j = 0, k = 0;
//	int count = 0;
//	for(i = 1; i < 5; i++)
//	{
//		for(j = 1; j < 5; j++)
//		{
//			if(j != i)
//			{
//				for(k = 1; k < 5; k++)
//					if(k != j && k != i)
//				{
//					count++;
//					printf(" %d",i * 100 + j * 10 + k);
//				}
//			}
//		}
//	}
//	printf("\ncount = %d", count);
//	return 0;
//}